home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 3 / Light ROM 3 - Disc 2.iso / programs / amiga / macromkr / abc.lha / ABC.rexx next >
OS/2 REXX Batch file  |  1992-07-16  |  14KB  |  654 lines

  1. /***   ArtDept Batch Converter (ABC)   ***/
  2. /***             By Ro Sato            ***/
  3. /***             Ryder Unit            ***/
  4. /***               7/2/92              ***/
  5. /***              Ver 1.0              ***/
  6.  
  7. address "ADPro"
  8.  
  9. options results
  10.  
  11. /* Path and filename of the Arexx WaitForPort program... */
  12. waitforport = 'SYS:Rexxc/WaitForPort'
  13.  
  14.     /*
  15.         open libraries
  16.     */
  17.  
  18.     IF ~SHOW('Libraries','rexxsupport.library') THEN
  19.         IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
  20.             CALL Exit('Cannot open rexxsupport.library')
  21.  
  22.     IF ~SHOW('Libraries','rexxarplib.library') THEN
  23.         IF ~ADDLIB('rexxarplib.library',0,-30,0) THEN
  24.             CALL Exit('Render.REXX requires RexxArpLib.Library')
  25.  
  26.     /*
  27.         INITIALIZATION
  28.     */
  29.      signal on syntax
  30.  
  31.      quitflag = 0
  32.      SCALESW  = 0
  33.      DITHSW   = 0
  34.      LCSW     = 0
  35.      LPSW     = 0
  36.     HAMSW    = 0
  37.     DCTVSW   = 0
  38.     ANIMSW   = 0
  39.     FCSW     = 0
  40.      DCCB     = 0
  41.      DNUM     = 0
  42.     FULL     = 0
  43.     BYPS        = 0
  44.     PIXASP   = 0
  45.     XDCTV    = 0
  46.     YDCTV    = 0
  47.     FF       = "Imagine"
  48.     ex       = 0
  49.      OP       = 0
  50.      SC       = 0
  51.     C        = 0
  52.  
  53.     /*
  54.         Initialize the Rexxarp
  55.     */
  56.  
  57.     row=SCREENROWS('WORKBENCH')
  58.      col=SCREENCOLS('WORKBENCH')
  59.     lace=SCREENLACE('WORKBENCH')
  60.     IF (row<400|col<640|lace=0) THEN DO
  61.         Result=OPENSCREEN(,,"HIRES" "LACE",,
  62.         "ADPRO BATCH CONVERSION FRONTEND 1992 Ryder Unit","ABC",,640,,)
  63.     END
  64.  
  65.     CALL OPENPORT(ABCPort)
  66.  
  67.     ADDRESS AREXX "'CALL CreateHost(ABCHost,ABCPort,ABC)'"
  68.     ADDRESS COMMAND waitforport 'ABCHOST'
  69.  
  70.     idcmp = 'CLOSEWINDOW+GADGETUP+MENUPICK'
  71.     flags = 'NOCAREREFRESH WINDOWCLOSE WINDOWDRAG',
  72.             'WINDOWDEPTH ACTIVATE'
  73.  
  74.  
  75.     CALL OpenWindow(ABCHost,0,11,640,389,idcmp,flags,)
  76.      CALL IFFImage(ABCHost, 'DH0:ABCWindow.IFF', 4, 11,640,389,N)
  77.  
  78.     CALL AddGadget(ABCHost,98,140, "Imagine","Imagin", "Imagine")
  79.      CALL AddGadget(ABCHost,98,170, "LW",     "LightW", "LW")
  80.     CALL AddGadget(ABCHost,98,200, "Vista",  "VistaP", "Vista")
  81.     CALL AddGadget(ABCHost,98,230, "Real3D", "Real3D", "Real3D")
  82.      CALL SetGadget(ABCHOST,"Imagine",'ON')
  83.  
  84.     CALL AddGadget(ABCHost,295,130, "SCALE",  "SCALE ", "SCALE")
  85.     CALL AddGadget(ABCHost,295,150, "DITHER", "DITHER", "DITHER")
  86.     CALL AddGadget(ABCHost,295,170, "PIXASP", "PIXASP", "PIXASP")
  87.     CALL AddGadget(ABCHost,295,190, "LOCKP",  "LOCKP ", "LOCKP")
  88.     CALL AddGadget(ABCHost,295,210, "256",    "256   ", "256")
  89.     CALL AddGadget(ABCHost,295,230, "ANIM",   "ANIM  ", "ANIM")
  90.     CALL AddGadget(ABCHost,295,250, "FC24",   "FC24  ", "FC24")
  91.  
  92.     CALL AddGadget(ABCHost,490,130, "IFF24",  "IFF24 ", "IFF24")
  93.     CALL AddGadget(ABCHost,490,155, "DCTV",   "DCTV  ", "DCTV")
  94.     CALL AddGadget(ABCHost,490,180, "JPEG",   "JPEG  ", "JPEG")
  95.     CALL AddGadget(ABCHost,490,205, "TIFF",   "TIFF  ", "TIFF")
  96.     CALL AddGadget(ABCHost,490,230, "HAM",    "HAM   ", "HAM")
  97.     CALL AddGadget(ABCHost,490,255, "TGA",    "TGA   ", "TGA")
  98.  
  99.      ADDRESS 'ABCHOST' WindowToFront
  100.  
  101.  
  102. /*
  103.   LOOP
  104. */
  105.  
  106. LOOP:
  107.  
  108. do forever
  109.     if quitflag = 1 then do
  110.          call CloseWindow(ABCHOST)
  111.           CLOSESCREEN(ABC)
  112.         leave
  113.      end
  114.      t = WAITPKT(ABCPORT)
  115.     do forever
  116.         p=getpkt(ABCPORT)
  117.           if c2d(p) = 0 then leave
  118.         arg = getarg(p)
  119.         t = reply(p,0)
  120.  
  121. /*
  122.   FLAG
  123. */
  124.  
  125.         if arg = CLOSEWINDOW then do
  126.             quitflag = 1
  127.             ex = 1
  128.         end
  129.          else if arg = "IFF24" then do
  130.              FITYPE = "IFF"
  131.               quitflag = 1
  132.              FULL = 1
  133.         end
  134.          else if arg = "DCTV" then do
  135.              FITYPE = "IFF"
  136.               quitflag = 1
  137.               DCTVSW = 1
  138.              FULL = 1
  139.         end
  140.          else if arg = "JPEG" then do
  141.              FITYPE = arg
  142.               quitflag = 1
  143.              FULL = 1
  144.         end
  145.          else if arg = "TIFF" then do
  146.              FITYPE = arg
  147.               quitflag = 1
  148.          end
  149.          else if arg = "HAM" then do
  150.              FITYPE = "IFF"
  151.               quitflag = 1
  152.               HAMSW = 1
  153.             OP = 1
  154.           end
  155.          else if arg = "TGA" then do
  156.              FITYPE = "TARGA"
  157.               quitflag =1
  158.               FULL = 1
  159.         end
  160.         else if arg = "SCALE" then do
  161.                 IF SCALESW = 1 Then do
  162.                 SCALESW = 0
  163.                        CALL SetGadget(ABCHOST,arg,'OFF')
  164.               end
  165.               else do
  166.                   SCALESW = 1
  167.                   CALL SetGadget(ABCHOST,arg,'ON')
  168.             end
  169.           end
  170.         else if arg = "DITHER" then do
  171.                 IF DITHSW = 1 Then do
  172.                 DITHSW = 0
  173.                        CALL SetGadget(ABCHOST,arg,'OFF')
  174.               end
  175.               else do
  176.                   DITHSW = 1
  177.                   CALL SetGadget(ABCHOST,arg,'ON')
  178.                    OP = 1
  179.             end
  180.           end
  181.         else if arg = "PIXASP" then do
  182.                 IF PIXASP = 1 Then do
  183.                 PIXASP = 0
  184.                        CALL SetGadget(ABCHOST,arg,'OFF')
  185.               end
  186.               else do
  187.                   PIXASP = 1
  188.                   CALL SetGadget(ABCHOST,arg,'ON')
  189.                    OP = 1
  190.             end
  191.           end
  192.         else if arg = "256" then do
  193.                 IF LCSW = 1 Then do
  194.                 LCSW = 0
  195.                        CALL SetGadget(ABCHOST,arg,'OFF')
  196.               end
  197.               else do
  198.                   LCSW = 1
  199.                   CALL SetGadget(ABCHOST,arg,'ON')
  200.                    OP = 1
  201.             end
  202.           end
  203.         else if arg = "LOCKP" then do
  204.                 IF LPSW = 1 Then do
  205.                 LPSW = 0
  206.                        CALL SetGadget(ABCHOST,arg,'OFF')
  207.               end
  208.               else do
  209.                   LPSW = 1
  210.                   CALL SetGadget(ABCHOST,arg,'ON')
  211.                    OP = 1
  212.             end
  213.           end
  214.         else if arg = "FC24" then do
  215.                 IF FCSW = 1 Then do
  216.                 FCSW = 0
  217.                        CALL SetGadget(ABCHOST,arg,'OFF')
  218.               end
  219.               else do
  220.                   FCSW = 1
  221.                   CALL SetGadget(ABCHOST,arg,'ON')
  222.             end
  223.           end
  224.         else if arg = "ANIM" then do
  225.                 IF ANIMSW = 1 Then do
  226.                 ANIMSW = 0
  227.                        CALL SetGadget(ABCHOST,arg,'OFF')
  228.               end
  229.               else do
  230.                   ANIMSW = 1
  231.                   CALL SetGadget(ABCHOST,arg,'ON')
  232.             end
  233.           end
  234.         else if arg = "Imagine" then do
  235.                 CALL SetGadget(ABCHOST,"Imagine",'ON')
  236.             CALL SetGadget(ABCHOST,"LW",'OFF')
  237.             CALL SetGadget(ABCHOST,"Vista",'OFF')
  238.             CALL SetGadget(ABCHOST,"Real3d",'OFF')
  239.             FF = arg
  240.         end
  241.         else if arg = "LW" then do
  242.                 CALL SetGadget(ABCHOST,"Imagine",'OFF')
  243.             CALL SetGadget(ABCHOST,"LW",'ON')
  244.             CALL SetGadget(ABCHOST,"Vista",'OFF')
  245.             CALL SetGadget(ABCHOST,"Real3d",'OFF')
  246.             FF = arg
  247.         end
  248.         else if arg = "Vista" then do
  249.                 CALL SetGadget(ABCHOST,"Imagine",'OFF')
  250.             CALL SetGadget(ABCHOST,"LW",'OFF')
  251.             CALL SetGadget(ABCHOST,"Vista",'ON')
  252.             CALL SetGadget(ABCHOST,"Real3d",'OFF')
  253.             FF = arg
  254.         end
  255.         else if arg = "Real3D" then do
  256.                 CALL SetGadget(ABCHOST,"Imagine",'OFF')
  257.             CALL SetGadget(ABCHOST,"LW",'OFF')
  258.             CALL SetGadget(ABCHOST,"Vista",'OFF')
  259.             CALL SetGadget(ABCHOST,"Real3d",'ON')
  260.             FF = arg
  261.         end
  262.     else nop
  263.      end
  264. end
  265.  
  266. ADPRO_TO_FRONT
  267.  
  268. IF ex ~= 0 THEN CALL FINISH
  269.  
  270.  
  271. getdir '"Load IMAGE From?"' '"RAM:"'
  272. FINAME=(adpro_result)
  273. FINAME=gimmepath(FINAME)
  274. IF RC ~= 0 THEN EXIT
  275.  
  276. getdir '"Save IMAGE Where?"' '"RAM:"'
  277. FONAME=(adpro_result)
  278. FONAME=gimmepath(FONAME);
  279. IF RC ~= 0 THEN EXIT
  280.  
  281. IF FF ~= "Imagine" THEN DO
  282.     GETSTRING '"Enter Base File Name"'
  283.     FILENM = (adpro_result)
  284.        IF RC ~= 0 THEN EXIT
  285. END;
  286.  
  287. IF FITYPE = "TIFF" THEN DO
  288.     ANIMSW = 0
  289. END;
  290.  
  291. IF ANIMSW = 1 & DCTVSW = 1 THEN DO
  292.     OP = 0
  293.     DITHSW = 0
  294.     LPSW = 0
  295.     LCSW = 0
  296.     ANIMSW = 1
  297.     FULL = 0
  298. END;
  299.  
  300. IF FULL = 1 THEN DO
  301.     OP = 0
  302.     DITHSW = 0
  303.      LPSW = 0
  304.     LCSW =0
  305.      ANIMSW = 0
  306. END;
  307.  
  308. getnumber '"Enter First Frame #"' 1 0 9999
  309. FRAME=adpro_result
  310. IF RC ~= 0 THEN EXIT
  311. getnumber '"Enter Last Frame # "' 30 1 9999
  312. TOTF=adpro_result
  313. FRC=TOTF-FRAME
  314. IF RC ~= 0 THEN EXIT
  315.  
  316. IF HAMSW = 1 THEN DO
  317.     OKAY2 "Render it NONLACE?"
  318.     IF RC = 1 THEN DO
  319.         YCOOR = 200
  320.     END;
  321.     ELSE DO
  322.         YCOOR = 400
  323.     END;
  324.         OKAY2 "No OVERSCAN?"
  325.     IF RC = 1 THEN DO
  326.         XCOOR = 320
  327.     END;
  328.     ELSE DO
  329.         XCOOR = 352
  330.         IF YCOOR = 200 THEN DO
  331.             YCOOR = 240
  332.         END;
  333.         ELSE DO
  334.             YCOOR = 480
  335.         END;
  336.     END;
  337.  
  338.      IF XCOOR = 320 & YCOOR = 400 THEN ST = 2
  339.     IF XCOOR > 320 & YCOOR < 400 THEN ST = 24
  340.     IF XCOOR > 320 & YCOOR > 400 THEN ST = 26
  341.     SCALESW = 0
  342.     LCSW = 0
  343.     ANIMSW = 0
  344. END;
  345.  
  346. IF ANIMSW = 1 & FRC<10 THEN DO
  347.     OKAY1 "Animation Less than 10 Frames X-)."
  348.     EXIT
  349. END;
  350.  
  351. IF DCTVSW = 1 THEN DO
  352.     getnumber '"Final Image Size X"' 640 640 736
  353.     XDCTV=(adpro_result)
  354.     IF RC ~= 0 THEN CALL FINISH
  355.     getnumber '"Final Image Size Y"' 200 200 482
  356.     YDCTV=(adpro_result)
  357.     IF RC ~= 0 THEN CALL FINISH
  358.      getnumber '"Enter Color Bits"' 3 3 4
  359.      DCCB =(adpro_result)
  360.     IF RC ~= 0 THEN CALL FINISH
  361.     OKAY2 "Bypass Art Department Pro?"
  362.     IF RC = 1 THEN BYPS = 1
  363.     IF SCALESW = 1 THEN DO
  364.         IF BYPS = 0 THEN DO
  365.             SCALESW = 1
  366.         END;
  367.         ELSE DO
  368.             SCALESW = 0
  369.         END;
  370.     END;
  371. END;
  372.  
  373. IF BYPS = 1 THEN PIXASP = 0
  374.  
  375. IF SCALESW = 1 THEN DO
  376.     getnumber '"Enter X Size"' 320 1 9999
  377.     XCOOR=(adpro_result)
  378.      IF RC ~= 0 THEN CALL FINISH
  379.     getnumber '"Enter Y Size"' 200 1 9999
  380.      YCOOR=(adpro_result)
  381.     IF RC ~= 0 THEN CALL FINISH
  382.     IF DCTVSW = 1 THEN DO
  383.         IF XCOOR > XDCTV |  YCOOR > YDCTV THEN DO
  384.             OKAY1 "Scale Size Exceeds Image Size X-)."
  385.             CALL FINISH
  386.         END;
  387.     END;
  388. END;
  389.  
  390. IF PIXASP = 1 THEN DO
  391.     getnumber '"Enter X Aspect"' 22 1 9999
  392.     XASP=(adpro_result)
  393.     IF RC~ = 0 THEN CALL FINISH
  394.     getnumber '"Enter Y Aspect"' 26 1 9999
  395.     YASP=(adpro_result)
  396.     IF RC~ = 0 THEN CALL FINISH
  397. END;
  398.  
  399. IF DITHSW = 1 THEN DO
  400.     getnumber '"Enter Dither #"' 1 1 6
  401.     DNUM=(adpro_result)
  402.     IF RC ~= 0 THEN CALL FINISH
  403. END;
  404. ELSE DNUM = 0
  405.  
  406. IF ANIMSW = 1 THEN DO
  407.     getstring '"Enter Path & Name for anim."' 'RAM:TEST.anim'
  408.     animname=(adpro_result)
  409.     IF RC ~= 0 THEN CALL FINISH
  410. END;
  411.  
  412. do forever
  413.     Postmsg(200, 180, "Processing Frame "||FRAME)
  414.  
  415.     lformat "UNIVERSAL"
  416.  
  417.     IF FF = "Imagine" THEN DO
  418.         FEXT=FRAME/10000
  419.         IF LENGTH(FEXT) = 5 THEN FEXT = FEXT||"0"
  420.         IF LENGTH(FEXT) = 4 THEN FEXT = FEXT||"00"
  421.         IF LENGTH(FEXT) = 3 THEN FEXT = FEXT||"000"
  422.         FEXT=RIGHT(FEXT,4)
  423.         LOADF=FINAME||"PIC."||FEXT
  424.          SAVEF=FONAME||"PIC."||FEXT
  425.     END;
  426.  
  427.     IF FF = "LW" THEN DO
  428.         IF FRAME = 0 THEN DO
  429.             LOADF=FINAME||FILENM||"000"
  430.             SAVEF=FONAME||FILENM||"000"
  431.         END;
  432.         ELSE DO
  433.             FEXT=FRAME/1000
  434.             IF LENGTH(FEXT) = 4 THEN FEXT = FEXT||"0"
  435.             IF LENGTH(FEXT) = 3 THEN FEXT = FEXT||"00"
  436.             FEXT=RIGHT(FEXT,3)
  437.             LOADF=FINAME||FILENM||FEXT
  438.              SAVEF=FONAME||FILENM||FEXT
  439.         END;
  440.     END;
  441.  
  442.     IF FF = "Vista" THEN DO
  443.         IF FRAME = 0 THEN DO
  444.             LOADF=FINAME||FILENM||"00000"
  445.             SAVEF=FONAME||FILENM||"00000"
  446.         END;
  447.         ELSE DO
  448.             FEXT=FRAME/100000
  449.             IF LENGTH(FEXT) = 6 THEN FEXT = FEXT||"0"
  450.             IF LENGTH(FEXT) = 5 THEN FEXT = FEXT||"00"
  451.             IF LENGTH(FEXT) = 4 THEN FEXT = FEXT||"000"
  452.             IF LENGTH(FEXT) = 3 THEN FEXT = FEXT||"0000"
  453.             FEXT=RIGHT(FEXT,5)
  454.             LOADF=FINAME||FILENM||FEXT
  455.             SAVEF=FONAME||FILENM||FEXT
  456.         END;
  457.     END;
  458.  
  459.     IF FF = "Real3D" THEN DO
  460.         IF FRAME = 0 THEN DO
  461.             LOADF=FINAME||FILENM||"0"
  462.             SAVEF=FONAME||FILENM||"0"
  463.         END;
  464.         ELSE DO
  465.             LOADF=FINAME||FILENM||FRAME
  466.             SAVEF=FONAME||FILENM||FRAME
  467.         END;
  468.     END;
  469.  
  470.     IF BYPS = 0 THEN DO
  471.         load LOADF
  472.         IF RC ~= 0 THEN DO
  473.             OKAY1 "File Cannot be Located."
  474.             CALL FINISH
  475.         END;
  476.     END;
  477.  
  478.     IF PIXASP = 1 THEN DO
  479.         OPERATOR DEFINE_PXL_ASPECT
  480.         IF RC ~= 0 THEN EXIT
  481.         OXASP = WORD(ADPRO_RESULT, 1)
  482.         OYASP = WORD(ADPRO_RESULT, 2)
  483.              IF XASP = OXASP & YASP = OYASP THEN PIXASP = 0
  484.          IF SCALEW = 1 THEN DO
  485.             OXASP = XCOOR
  486.             OYASP = YCOOR
  487.         END;
  488.     END;
  489.  
  490.     C = C + 1
  491.  
  492.     IF FCSW = 1 & C = 1 THEN DO
  493.         SFORMAT "FC24"
  494.         SAVE "XXX" "RAW" "BOARD_NO" 0 "B_WIDTH" 1024 "CLEAR"
  495.     END;
  496.  
  497.     sformat FITYPE
  498.  
  499.  
  500. /*
  501.     OPERATORS
  502. */
  503.  
  504.     IF HAMSW = 1 THEN DO
  505.         RENDER_TYPE HAM
  506.          SCALESW = 1
  507.         SCREEN_TYPE ST
  508.     END;
  509.  
  510.     IF SCALESW = 1 THEN DO
  511.         'ABS_SCALE' XCOOR YCOOR
  512.         IF RC ~= 0 THEN CALL FINISH
  513.      END;
  514.  
  515.     IF PIXASP = 1 THEN DO
  516.         XA = (OXASP/OYASP) * 100
  517.         YA = 100
  518.         IF XASP > YASP THEN DO
  519.             XA = XASP * 10000 / (YASP*XA)
  520.         END;
  521.         ELSE DO
  522.             XA = XA * (YASP/XASP)
  523.         END;
  524.         IF XA < 100 THEN DO
  525.             YA = 10000/XA
  526.             XA = 100
  527.         END;
  528.  
  529.         PCT_SCALE TRUNC(XA+0.5) TRUNC(YA+0.5)
  530.              IF RC~= 0 THEN DO
  531.             PCT_SCALE TRUNC((10000/YA)+0.5) TRUNC((10000/XA)+0.5)
  532.             IF RC = 0 THEN DO
  533.                 OPERATOR DEFINE_PXL_ASPECT XASP YASP
  534.             END;
  535.         END;
  536.         ELSE DO
  537.             OPERATOR DEFINE_PXL_ASPECT XASP YASP
  538.         END;
  539.      END;
  540.  
  541.     DITHER DNUM
  542.  
  543.     IF LCSW = 1 THEN DO
  544.         RENDER_TYPE 256
  545.     END;
  546.  
  547.     IF LPSW = 1 THEN DO
  548.         PSTATUS LOCKED
  549.     END;
  550.     ELSE DO
  551.         PSTATUS UNLOCKED
  552.     END;
  553.  
  554.     IF OP = 1 THEN DO
  555.         EXECUTE
  556.         IF RC ~= 0 THEN CALL FINISH
  557.      END;
  558.  
  559.     IF ANIMSW = 1 THEN DO
  560.         open('out',FONAME||'pic.list','w')
  561.     END;
  562.  
  563.     IF BYPS = 1 THEN DO
  564.          address command "IFFtoDCTV"||" "||LOADF||" "||"-w"||XDCTV||" -h"||YDCTV||" -d"||DCCB||" -o"||FONAME
  565.           IF RC ~= 0 THEN DO
  566.             OKAY1 "File Cannot be Located."
  567.             CALL FINISH
  568.         END;
  569.         DCTVSW = 0
  570.     END;
  571.     ELSE DO
  572.         IF OP = 1 THEN DO
  573.             SAVE SAVEF "Image"
  574.         END;
  575.          ELSE DO
  576.             SAVE SAVEF "RAW"
  577.         END;
  578.     END;
  579.  
  580.     IF DCTVSW = 1 THEN DO
  581.         address command "IFFtoDCTV"||" "||SAVEF||" "||"-w"||XDCTV||" -h"||YDCTV||" -d"||DCCB||" -o"||FONAME
  582.         address command "delete"||" "||SAVEF
  583.     END;
  584.  
  585.     IF FCSW = 1 THEN DO
  586.         SFORMAT
  587.         CURRENTSAVER = ADPRO_RESULT
  588.  
  589.         SFORMAT "FC24"
  590.  
  591.         XSIZE
  592.         THESIZE = ADPRO_RESULT
  593.         YSIZE
  594.         THEYSIZE = ADPRO_RESULT
  595.  
  596.         IF THESIZE < 384 THEN THESIZE = 768
  597.         IF THESIZE = 384 AND THEYSIZE < 482 THEN THESIZE = 768
  598.  
  599.         SAVE "XXX" "RAW" "BOARD_NO" 0 "B_WIDTH" THESIZE "CENTER" "BOARD" "ON" "IMAGE"
  600.  
  601.         SFORMAT CURRENTSAVER
  602.     END;
  603.  
  604.     IF ANIMSW = 1 THEN DO
  605.         writeln('out',SAVEF||'.dctv')
  606.     END;
  607.  
  608.         FRAME=FRAME+1
  609.     IF FRAME>TOTF then leave
  610. END;
  611.  
  612. IF ANIMSW = 1 THEN DO
  613.     close('out')
  614.     picout=FONAME||"pic.list"
  615.     address command "makeanim "picout" "animname""
  616.     IF RC ~= 0 THEN DO
  617.         OKAY1 "Failed to make animation."
  618.         CALL FINISH
  619.     END;
  620.     address command "delete "picout
  621. END;
  622.  
  623. OKAY1 "Finished!"
  624.  
  625. FINISH:
  626.  
  627.     Postmsg()
  628.     EXIT
  629.  
  630. gimmepath:
  631.       arg fullnamegx;
  632.     tempgx = reverse(fullnamegx);
  633.     lengx = length(fullnamegx);   /* get length of string */
  634.     slashdex = index(tempgx,'/'); /* first occurance of '/' from right */
  635.     colondex = index(tempgx,':');  /* first occurance of ':' from right */
  636.       seploc = 0; /* assumes current dir, no path supplied */
  637.         if slashdex ~= 0 then do /* we assume we are in a DIR */
  638.         seploc = (lengx)+1;
  639.           fullnamegx=fullnamegx||"/"
  640.      end;
  641.     else do
  642.         if colondex <= 1 then do
  643.                  seploc = (lengx-colondex)+1;
  644.             end;
  645.         else do
  646.             seploc =(lengx)+1;
  647.             fullnamegx=fullnamegx||"/"
  648.         end;
  649.     end;
  650.     gxname = substr(fullnamegx,seploc+1); /* if you ever need it */
  651.     gxpath = left(fullnamegx,seploc);
  652. return(gxpath);
  653.  
  654.